//创建reducer
//引入immutableJS用于管理数据 处理数据的可变性
// Map是让一个对象成为immutableJS管理的API 但是这个是浅层的只是对象的第一层让它管理
// fromJS让一个对象成为immutableJS管理的API 这个是深层的被管理
import { Map } from 'immutable'
// * as代表导出所有并命名为actionTypes
import * as actionTypes from './constants'
//初始值以及或去到的Banner数据存放的地方 并被immutableJS管理
const defaultState = Map({
    topBanners: [],
    hotRecommends: [],
    newAlbums: [],
    upRanking: {},
    newRanking: {},
    originalRanking:{},
})

function reducer(state = defaultState
    , action) {
    switch (action.type) {
        case actionTypes.CHANGE_TOP_BANNERS:
            //这里等于返回的一个对象 在公共状态池里赋值的时候再细分就是就是recommend{topBanners：{请求返回的数组值}}
            //set是immutableJS库的api用于添加数据返回一个新的对象 第一个参数更改值的属性名称 第二个参数是更改的值
            return state.set("topBanners", action.topBanners)
        case actionTypes.CHANGE_HOT_RECOMMEND:
            return state.set("hotRecommends", action.hotRecommends)
        case actionTypes.CHANGE_NEW_ALBUM:
            return state.set("newAlbums", action.newAlbums)
        case actionTypes.CHANGE_UP_RANKING:
            return state.set("upRanking", action.upRanking)
        case actionTypes.CHANGE_NEW_RANKING:
            return state.set("newRanking", action.newRanking)
        case actionTypes.CHANGE_ORIFINAl_RANKING:
            return state.set("originalRanking", action.originalRanking)
        default:
            return state
    }
}
export default reducer